162d28
@@ -520,6 +520,8 @@
public class JsrJobOperator implements JobOperator, InitializingBean {
 							factoryBean.close();
 						}
 
+						batchContext.close();
+
 						if(semaphore.availablePermits() == 0) {
 							semaphore.release();
 						}
@@ -541,6 +543,10 @@
public class JsrJobOperator implements JobOperator, InitializingBean {
 
 			jobRepository.update(jobExecution);
 
+			if(batchContext.isActive()) {
+				batchContext.close();
+			}
+
 			throw new JobRestartException(e);
 		}
 
@@ -656,6 +662,8 @@
public class JsrJobOperator implements JobOperator, InitializingBean {
 							factoryBean.close();
 						}
 
+						batchContext.close();
+
 						if(semaphore.availablePermits() == 0) {
 							semaphore.release();
 						}
@@ -679,6 +687,10 @@
public class JsrJobOperator implements JobOperator, InitializingBean {
 			}
 			jobRepository.update(jobExecution);
 
+			if(batchContext.isActive()) {
+				batchContext.close();
+			}
+
 			throw new JobStartException(e);
 		}
 		return jobExecution.getId();
